package org.example.springboot.common.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;

import java.util.Collection;

/**
 * 基础服务接口，所有Service接口都要继承
 *
 * @author Fz
 */
public interface BaseService<T> extends IService<T> {

    /**
     * 根据UUID查询单条数据
     *
     * @param uuid 唯一标识
     * @return T t
     */
    default T getByUuid(String uuid) {
        return getBaseMapper().selectOne(new QueryWrapper<T>().eq("uuid", uuid));
    }

    /**
     * 根据UUID编辑单条数据
     *
     * @param entity 实体类
     * @param uuid   唯一标识
     * @return T t
     */
    default boolean updateByUuid(T entity, String uuid) {
        return SqlHelper.retBool(getBaseMapper().update(entity, new QueryWrapper<T>().eq("uuid", uuid)));
    }

    /**
     * 单条保存或修改，防止事务失效
     *
     * @param entity 实体对象
     */
    default boolean saveOrUp(T entity) {
        return saveOrUpdate(entity);
    }

    /**
     * 批量保存，防止事务失效
     *
     * @param entityList 实体对象集合
     */
    default boolean saveOrUpBatch(Collection<T> entityList) {
        return saveOrUpdateBatch(entityList, DEFAULT_BATCH_SIZE);
    }

}